可迭代对象 -> 可以进行循环的对象 -> str list 等等 数字不是
索引、切片、步长 和 str 的方法一样
1. 增
- .append() -> 将对象添加到列表的最后面
arr = ['Kevin', 'Amy', 'Tom', 'Eric']
arr.append('Yeung')
- .insert(index,obj) -> index: 想要添加到位置的下标 obj: 添加的内容 ->将对象添加到指定的位置
arr = ['Kevin', 'Amy', 'Tom', 'Eric']
arr.insert(2, '指定的位置') # ['Kevin', 'Amy', '指定的位置', 'Tom', 'Eric']
- .extend(可迭代对象) -> 迭代添加(循环添加)
arr = ['Kevin', 'Amy']
arr.extend('一二') # ['Kevin', 'Amy', '一', '二']
arr.extend(['Eric', 'Tom']) # ['Kevin', 'Amy', 'Eric', 'Tom']
2. 删
- .pop(index) -> index: 要删除对象的下标 不传默认删除最后一个 -> 返回值: 被删除的对象
arr = ['Kevin', 'Amy', 'Eric', 'Tom']
arr.pop() # ['Kevin', 'Amy', 'Eric']
arr.pop(1) # ['Kevin', 'Eric', 'Tom']
popObj = arr.pop(1) # pop返回值: Amy
- .remove(obj) -> obj: 要要删除的元素,如果有相同的元素只会删除第一个 -> 返回值: None 相当于没有
arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr.remove('Kevin') # ['Amy', 'Kevin', 'Eric', 'Tom']
- .clear() -> 清空列表
arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr.clear() # []
- del list[start:end] -> 切片删除
arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
del arr[1:4] # ['Amy', 'Tom']
- del list -> 彻底从内存中删除该数组
arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
del arr
3. 改
- 普通修改
arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr[0] = '修改' # ['修改', 'Kevin', 'Kevin', 'Eric', 'Tom']
- list[start:end] = 可迭代对象 -> 切片修改
arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr[1:3] = '修改' # ['Amy', '修', '改', 'Eric', 'Tom']
arr[1:3] = ['修改1', '修改2'] # ['Amy', '修改1', '修改2', 'Eric', 'Tom']
4. 排序
- .sort() -> 正序
arr = [2, 1, 5, 6, 4]
arr.sort() # [1, 2, 4, 5, 6]
- .sort(reverse=True) -> 倒序
arr = [2, 1, 5, 6, 4]
arr.sort(reverse=True) # [6, 5, 4, 2, 1]
- .sort(key=fn) -> key = 函数名/匿名函数 -> 如果有 key 那么就会通过 key 的函数返回值进行排序
# 按照绝对值排序
lis = [2, 5, -3, 4, -9, 1]
lis.sort(key=abs)
print(lis)
# 按照长度排序
lis = ['1', ' ', '23', '12313123', '444']
lis.sort(key=len) # ['1', '23', '444', ' ', '12313123']
- .reverse() -> 列表反转
arr = [2, 1, 5, 6, 4]
arr.reverse() # [4, 6, 5, 1, 2]
5. 合并列表
- 合并列表相当于 js 中的 concat
- 列表相加 -> 返回值: 列表
lis1 = [1, 2, 3]
lis2 = [2, 3, 4]
lis3 = lis1 + lis2 # [1, 2, 3, 2, 3, 4]
- chain -> 返回值: 可迭代对象
from itertools import chain
lis1 = [1, 2, 3]
lis2 = [2, 3, 4]
list3 = chain(lis1, lis2) # <itertools.chain object at 0x000001C1B517FBE0>
for num in list3:
print(num)
6. 其他方法
- max(list, key=fn) -> 返回列表最大值 -> key = 函数名/匿名函数 -> 如果有 key 那么就会获取 key 的函数返回值中的最大值
arr = [1, 2, 3, -4]
print(max(arr)) # 3
# 按照绝对值获取最大值
arr = [1, 2, 3, -4]
print(max(arr, key=abs)) # 4
- min(list, key=fn) -> 返回列表最小值 -> key = 函数名/匿名函数 -> 如果有 key 那么就会获取 key 的函数返回值中的最小值
arr = [1, 2, 3, -4]
print(min(arr)) # -4
# 按照绝对值获取最小值
arr = [1, 2, 3, -4]
print(min(arr, key=abs)) # 1
- range(startNum,endNum) -> 创建一个整数列表,一般用在 for 循环中 -> 直接打印是不会返回列表只会返回 range(10, 35)(迭代器) -> 当 startNum 缺省时,默认为 0,即 range(,10) 相当于 range(0,10)-> 每进行一次循环就开始创建一个数字返回给你,不会一开始就将全部数字创建出来,这样可以节省内存
arr = range(10, 35)
print(arr) # 结果 range(10, 35) -> 用作循环
for i in arr:
print(i) # 打印出来的是 10 - 34
for i in range(0, 10):
print(i) # 打印出来的是 0 - 9
for i in range(10):
print(i)# 打印出来的是 0 - 9
for i in range(1,10,2): # 步长
print(i)
for i in range(10,1,-2): # 反向步长
print(i)
7. 公共方法
- len(xxx) -> 获取长度
arr = [2, 1, 5, 6, 4]
arr_len = len(arr) # 5
- .count(xxx) -> 统计对象出现的次数
arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr_count = arr.count('Kevin') # 2
- .index(xxx) -> 获取对象的下标 -> 获取不到则报错
arr = ['Amy', 'Kevin', 'Eric', 'Tom']
arr_index = arr.index('Kevin') # 1
- 列表没有提供 .find() 的方法
- 'xxx'.join(list) -> 列表转化为字符串 -> 注意: 使用该办法的时候列表里面不能有纯数字不然会报错,因为数字不能与字符串相加
arr = ['Amy', 'Kevin', 'Eric', 'Tom']
arr_join = '~'.join(arr) # Amy~Kevin~Eric~Tom
8. 小练习
- 循环添加数据进列表
while 1:
username = input('>>>')
arr.append(username)
if username.upper() == 'Q':
break
- 打印列表中的元素遇见嵌套列表直接打印里面的值
li = [1, 2, 3, 5, 'alex', [2, 3, 4, 5, 'taibai'], 'afds']
for i in li:
if type(i) == list:
for j in i:
print(j)
else:
print(i)